package it.poste.il.compensatore.cancellations.interf;

import it.poste.il.compensatore.utilities.SendSOAPMessage;

import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;

/**
 * Class that takes care of creating of the message of cancellation emission paper.
 */
public interface ICancellation {


	/**
	 * Method that returns the SOAP Message to send.
	 * @return SendSOAPMessage The soap message to send.
	 */
	public SendSOAPMessage getSendSOAPMessage();

	/**
	 * Method that sets the SOAP Message to send.
	 * @param sendSOAPMessage The soap message to set.
	 * @return void
	 */
	public void setSendSOAPMessage(SendSOAPMessage sendSOAPMessage);

	/**
	 * Method that dedicated to creating and sending of the soap message.
	 * @param soapAction Action for the soap message
	 * @param timeout Timeout of the connection
	 * @param url Url to send the soap message
	 * @param source Parameter source of the header for soap message
	 * @param requestID Parameter requestID of the header for soap message
	 * @param routingRole Parameter routingRole of the header for soap message
	 * @param creationTime Parameter creationTime of the header for soap message
	 * @param fractional Parameter fractional of the header for soap message
	 * @param accountingDate Parameter accountingDate of the header for soap message
	 * @param numberATM Parameter numberATM of the header for soap message
	 * @param numberOperation Parameter numberOperation of the header for soap message
	 * @return String Response of the soap message
	 */
	public String sendSoap(String soapAction, int timeout, String url, String source, String requestID,
			String routingRole, String creationTime, String fractional, String accountingDate,
			String numberATM, String numberOperation);	
}